function pulso_en_llegada=propagacion(pulso_ext,x,z,c,d,fs,Fpulso_ext,nuevoM)

%Idea, propago el pulso en emisión hacia el punto (x,z) mediante la función
%de transferencia apropiada (asumiendo propagación estilo Huygens)
%Trabajo en espacio de Fourier
%Trabajo con las frecuencias positivas para ahorrar cuentas

[M,N]=size(pulso_ext);

if nargin<8
    nuevoM=M;
end
if nargin<7
    Fpulso_ext=fft(pulso_ext); %FFT por columnas (por sensor)
    Fpulso_ext=Fpulso_ext(1:(M/2+1),:);
end


rx=([0:(N-1)]*d - x)';
modR=sqrt(rx.*rx + z^2); %Vector columna
delay=fs*(modR)'/c;

f= [0:(M/2-1)]'/M; %Vector columna
aux=-2*pi*mod(f*delay,1);
%aux=-2*pi*f*delay;
Wb=cos(aux)+1i*sin(aux);
Wb(M/2+1,:)=ones(1,length(modR));
YFpredata=Fpulso_ext.*Wb;
YF=(YFpredata*(1./modR));
YF=[YF;conj(YF((M/2):-1:2))];

pulso_en_llegada=ifft(YF,nuevoM);

end
